#!/bin/bash

#shell 创建一个数组实现的栈方法

#创建一个栈
function NewStack() {
	declare -a Stack
	export Length=0
}

#入栈中一个元素, 第一个参数为元素
function Push() { 
	Stack[$Length]=$1
	((Length++))
}

#出栈
function Pop() {
	[ $Length -le 0  ] && echo -e "\033[31m当前栈为空，Pop失败\033[0m" && return
	Length=$(($Length-1))
	echo ${Stack[${Length}]} && unset Stack[${Length}]
}

#获取栈最上面的元素,但是不出栈
function Peak(){
	[ $Length -le 0  ] && echo -e "\033[31m当前栈为空, Peak失败\033[0m" && return
	echo ${Stack[${Length}-1]}
}

#清空栈
function ClearStack() {
	unset Stack
	Length=0
}

#获取栈中元素的个数
function StackLen() {
	echo $Length
}

#栈是否为空
function IsEmpty(){
	[ $Length -le 0 ] && echo true || echo false
}
